import { useUserStore } from '@/stores/user.js'
import axios from 'axios'
import router from '@/router/index.js'
import { ElMessage } from 'element-plus'

// const baseURL = 'http://120.55.193.127:30002'
const baseURL = import.meta.env.VITE_BASE_URL

const instance = axios.create({
  baseURL,
  timeout: 100000
})

instance.interceptors.request.use(
  (config) => {
    console.log('baseUrl ==' + baseURL)
    const userStore = useUserStore()

    if (userStore.token) {
      config.headers.token = userStore.token
      console.log('token' + userStore.token)
    }
    return config
  },
  (err) => Promise.reject(err)
)

instance.interceptors.response.use(
  (res) => {
    // 检查响应体中是否存在 res.data.code
    if (res.data && typeof res.data.code === 'number') {
      // 处理登录失效
      if (res.data.code === 208) {
        const redirect = encodeURIComponent(window.location.href) // 当前地址栏的url
        router.push(`/login?redirect=${redirect}`)
        return Promise.reject(new Error(res.data.message || 'Error'))
      }

      // 处理成功状态
      if (res.data.code === 200) {
        return res.data
      }

      // 处理其他非成功状态
      ElMessage({ message: res.data.message || '服务异常', type: 'error' })
      return Promise.reject(res.data)
    } else {
      // 如果 res.data.code 不存在，直接返回响应体
      return res.data
    }
  },
  (err) => {
    ElMessage({
      message: err.response.data.message || '服务异常',
      type: 'error'
    })
    console.log(err)
    if (err.response?.status === 401) {
      router.push('/login')
    }
    return Promise.reject(err)
  }
)

export default instance
export { baseURL }
